package entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@SuppressWarnings("serial")
@Entity
@Table(name = "Abilita")
public class Abilita implements Serializable {

	private int idAbilita;
	private String nomeAbilita;
	private String descrizioneAbilita;
	private boolean isApproved;

	@Column(name = "idAbilitaddd")
	private List<Utente> utente = new ArrayList<Utente>();

	public Abilita() {
		super();
	}

	public Abilita(int id, String nomeAb, String descrizioneAb, boolean isAppr) {
		super();
		setIdAbilita(id);
		setNomeAbilita(nomeAb);
		setDescrizioneAbilita(descrizioneAb);
		setApproved(isAppr);
	}

	@Id
	@Column(name = "idAbilita", length = Integer.MAX_VALUE)
	public int getIdAbilita() {
		return idAbilita;
	}

	private void setIdAbilita(int id) {
		this.idAbilita = id;
	}

	@Column(name = "nomeAbilita")
	public String getNomeAbilita() {
		return nomeAbilita;
	}

	public void setNomeAbilita(String nomeAb) {
		this.nomeAbilita = nomeAb;
	}

	@Column(name = "descrizioneAbilita")
	public String getDescrizioneAbilita() {
		return descrizioneAbilita;
	}

	public void setDescrizioneAbilita(String descrizioneAb) {
		this.descrizioneAbilita = descrizioneAb;
	}

	@Column(name = "isApproved")
	public boolean isApproved() {
		return isApproved;
	}

	public void setApproved(boolean isAppr) {
		this.isApproved = isAppr;
	}

	@ManyToMany(fetch = FetchType.EAGER)
	@JoinTable(name = "UtenteAbilita", joinColumns = { @JoinColumn(name = "idAbilita", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "username", nullable = false) })
	public List<Utente> getUtente() {
		return utente;
	}

	public void setUtente(List<Utente> utentiConAbilita) {
		this.utente = utentiConAbilita;
	}

}